package tech.aistar.utils;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtParser;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.security.Keys;
import tech.aistar.pojo.User;

import java.util.Date;

public class JwtUtils {
    // 修复1：密钥长度改为 32 字节以上（HS256 算法强制要求）
    private static final String SIG = "febaa5b6-b818-440a-ad8a-9606ffaafd0c1234567890";
    // 修复2：过期时间延长到 2 小时（1分钟太短，登录后很快失效）
    private static final long EXPIRE_TIME = 2 * 60 * 60 * 1000;

    // 生成 Token（参数类型已正确，无需修改）
    public static String generateToken(User user){
        Date now = new Date();
        return Jwts.builder()
                .claim("username", user.getUsername()) // 用 User 的 getter 方法
                .claim("pwd", user.getPwdHash())
                .issuedAt(now)
                .expiration(new Date(now.getTime() + EXPIRE_TIME))
                .signWith(Keys.hmacShaKeyFor(SIG.getBytes()), Jwts.SIG.HS256)
                .compact();
    }

    // 验证 Token（无需修改，保持原样）
    public static Claims verifyToken(String token){
        JwtParser parser = Jwts.parser()
                .verifyWith(Keys.hmacShaKeyFor(SIG.getBytes())).build();
        try {
            return parser.parseSignedClaims(token).getPayload();
        } catch (Exception e) {
            return null; // Token 无效/过期时返回 null
        }
    }
}